//package com.turing.post.organization.impl;
//
//import java.math.BigInteger;
//import java.util.List;
//
//import javax.ejb.EJB;
//import javax.ejb.Local;
//import javax.ejb.Remote;
//import javax.ejb.Stateless;
//import javax.persistence.EntityManager;
//import javax.persistence.PersistenceContext;
//import javax.persistence.Query;
//
//import com.turing.post.common.util.PCPSCommonDao;
//import com.turing.post.organization.util.AcqInst;
//import com.turing.post.organization.util.AcqInstDao;
//import com.turing.post.organization.util.OrganApplicationException;
//import com.turing.post.organization.util.OrganRespCode;
//import com.turing.post.util.Config;
//import com.turing.post.util.GeneralDao;
//import com.turing.post.util.PCPSApplicationException;
//import com.turing.post.util.PCPSUtil;
//
//@Stateless(mappedName = "organization.impl.AcqInstDaoImpl")
//@Remote
//@Local
//public class AcqInstDaoImpl implements AcqInstDao {
//
//	@EJB(mappedName = "common.impl.PCPSCommonDaoImpl")
//	private PCPSCommonDao commonDaoImpl;
//
//	/**
//	 * 实体管理器
//	 */
//	@PersistenceContext
//	protected EntityManager _em;
//
//	@Override
//	/*
//	 * *
//	 * 
//	 * @根据acqInstId查询AcqInst
//	 * 
//	 * @param acqInstId
//	 * 
//	 * @return AcqInst
//	 */
//	public AcqInst getAcqInstByAcqInstId(BigInteger acqInstId) {
//		return _em.find(AcqInst.class, acqInstId);
//	}
//
//	@Override
//	public void deleteAcqInstByAcqInstId(BigInteger acqInstId)
//			throws PCPSApplicationException {
//		if (acqInstId != null) {
//			String sql = "delete from AcqInst where AcqInstId = ?1";
//			Query query = _em.createNativeQuery(sql);
//			query.setParameter(1, acqInstId);
//			try {
//				query.executeUpdate();
//			} catch (Exception e) {
//				throw new OrganApplicationException(
//						OrganApplicationException.ERRCODE_CATEGORY_APPLICATION,
//						OrganRespCode.ISSUE_INSERT_UPDATE,
//						"删除收单机构号失败，该机构号已被引用!");
//			}
//		}
//	}
//
//	@SuppressWarnings("unchecked")
//	@Override
//	public List<AcqInst> getAcqInstListByCondition(String acqInst,
//			String acqInstName, Integer page) {
//		int maxResult = Config.PAGE_SIZE;
//		int startPosition = maxResult * page;
//		String sql = "select t.* from AcqInst t where acqInst like ?1 and AcqInstName like ?2 order by AcqInstId";
//		Query query = _em.createNativeQuery(sql, AcqInst.class).setFirstResult(
//				startPosition).setMaxResults(maxResult);
//		if (PCPSUtil.isEmpty(acqInst)) {
//			acqInst = "";
//		}
//		query.setParameter(1, "%" + acqInst + "%");
//		if (PCPSUtil.isEmpty(acqInstName)) {
//			acqInstName = "";
//		}
//		query.setParameter(2, "%" + acqInstName + "%");
//		return query.getResultList();
//	}
//
//	@Override
//	public BigInteger getAcqInstTotalByCondition(String acqInst,
//			String acqInstName) {
//		String sql = "select nvl(count(*),0) from AcqInst t where acqInst like ?1 and AcqInstName like ?2";
//		Query query = _em.createNativeQuery(sql);
//		if (PCPSUtil.isEmpty(acqInst)) {
//			acqInst = "";
//		}
//		query.setParameter(1, "%" + acqInst + "%");
//		if (PCPSUtil.isEmpty(acqInstName)) {
//			acqInstName = "";
//		}
//		query.setParameter(2, "%" + acqInstName + "%");
//		return new BigInteger(query.getSingleResult().toString());
//	}
//
//	@Override
//	public void insertAcqInst(AcqInst acqInst) throws PCPSApplicationException {
//		if (PCPSUtil.isEmpty(acqInst.getAcqInst())
//				|| PCPSUtil.isEmpty(acqInst.getAcqInstName())) {
//			throw new OrganApplicationException(
//					OrganApplicationException.ERRCODE_CATEGORY_APPLICATION,
//					OrganRespCode.ISSUE_INSERT_UPDATE, "收单机构号新增失败，输入参数为空!");
//		}
//
//		// 收单机构
//		String _acqInst = acqInst.getAcqInst();
//		if (PCPSUtil.isEmpty(_acqInst) || !PCPSUtil.isNumeric(_acqInst)
//				|| _acqInst.trim().length() != 8) {
//			throw new OrganApplicationException(
//					OrganApplicationException.ERRCODE_CATEGORY_APPLICATION,
//					OrganRespCode.ISSUE_INSERT_UPDATE, "收单机构标识码必须为8位数字!");
//		}
//
//		if (getAcqInstByAcqInst(acqInst.getAcqInst().trim()) != null) {
//			throw new OrganApplicationException(
//					OrganApplicationException.ERRCODE_CATEGORY_APPLICATION,
//					OrganRespCode.ISSUE_INSERT_UPDATE, "收单机构号新增失败，收单机构标识码已经存在!");
//		}
//
//		acqInst.setAcqInstId(commonDaoImpl.getUniqueIntegerKey());
//		GeneralDao.insert(_em, acqInst);
//	}
//
//	@Override
//	public void updateAcqInst(AcqInst acqInst) throws PCPSApplicationException {
//		// 收单机构
//		String _acqInst = acqInst.getAcqInst();
//		if (PCPSUtil.isEmpty(_acqInst) || !PCPSUtil.isNumeric(_acqInst)
//				|| _acqInst.trim().length() != 8) {
//			throw new OrganApplicationException(
//					OrganApplicationException.ERRCODE_CATEGORY_APPLICATION,
//					OrganRespCode.ISSUE_INSERT_UPDATE, "收单机构标识码必须为8位数字!");
//		}
//
//		AcqInst ai = getAcqInstByAcqInstId(acqInst.getAcqInstId());
//		if (!PCPSUtil.isEmpty(acqInst.getAcqInst())) {
//			if (!ai.getAcqInst().equals(acqInst.getAcqInst())) {
//				if (getAcqInstByAcqInst(acqInst.getAcqInst().trim()) != null) {
//					throw new OrganApplicationException(
//							OrganApplicationException.ERRCODE_CATEGORY_APPLICATION,
//							OrganRespCode.ISSUE_INSERT_UPDATE,
//							"收单机构修改失败，收单机构标识码已经存在!");
//				}
//			}
//		}
//		ai = getAcqInstByAcqInstId(acqInst.getAcqInstId());
//		ai.setAcqInstName(acqInst.getAcqInstName());
//		ai.setAcqInst(acqInst.getAcqInst());
//		GeneralDao.update(_em, ai);
//	}
//
//	@Override
//	public AcqInst getAcqInstByAcqInst(String acqInst) {
//		String sql = "select t.* from AcqInst t where t.AcqInst = ?1";
//		Query query = _em.createNativeQuery(sql, AcqInst.class);
//		query.setParameter(1, acqInst);
//		if (query.getResultList().size() > 0) {
//			return (AcqInst) query.getResultList().get(0);
//		}
//		return null;
//	}
//}